/**
 * TSPL _ (Constants)
 */
var _ = {
  LF: [0x0a],
  FS: [0x1c],
  FF: [0x0c],
  GS: [0x1d],
  DLE: [0x10],
  EOT: [0x04],
  NUL: [0x00],
  ESC: [0x1b],
  EOL: '\n',
};

// 这条指令用来设置纸张的宽度及高度
_.SIZE = {
  INCH_M_N: 'SIZE {0},{1}\n', // 英制（inch）
  MM_M_N: 'SIZE {0}mm,{1}mm\n'  // 公制（mm)
}

// 定义两张标签纸中间的间隙高度
_.GAP = {
  INCH_M_N: 'SIZE {0},{1}\n', // 英制（inch）
  MM_M_N: 'SIZE {0}mm,{1}mm\n'  // 公制（mm)
}

// 定义黑标的高度及偏移位置
_.BLINE = {
  INCH_M_N: 'BLINE {0},{1}\n', // 英制（inch）
  MM_M_N: 'BLINE {0}mm,{1}mm\n'  // 公制（mm)
}

// 定义纸张打印的方向
_.DIRECTION_N = 'DIRECTION {0}\n'

// 定义打印浓度
_.DENSITY_N = 'DENSITY {0}\n'

// 清除打印机中的图像缓存
_.CLS = 'CLS\n'

// 裁纸
_.CUT = 'CUT\n'

// 自检
_.SELFTEST = 'SELFTEST\n'

// 打印缓冲区
_.PRINT_M = 'PRINT {0}\n'

// 打印一段文字
_.TEXT_X_Y_FONT_ROTATION_XMULTIPLICATION_YMULTIPLICATION_CONTENT = 'TEXT {0},{1},"{2}",{3},{4},{5},"{6}"\n'

// 画线
_.BAR_X_Y_WIDTH_HEIGHT = 'BAR {0},{1},{2},{3}\n'

/**
 * 打印一维条码
 * X 指定条码的 X 坐标
 * Y 指定条码的 Y 坐标
 * code Type  见TSLP2指令集
 * height 条码高度（单位 dot）
 * human readable    0: 不显示码文
 *                   1：显示码文，码文左对齐
 *                   2：显示码文，码文居中
 *                   3：显示码文，码文右对齐
 * rotation          0   : 不旋转
 *                   90  ：顺时针旋转 90 度
 *                   180 ：顺时针旋转 180 度
 *                   270 ：顺时针旋转 270 度
 * narrow            窄比例因子宽度（单位 dot）
 * wide              宽比例因子宽度（单位 dot）
 * content           条码数据内容                        
 */
_.BARCODE_X_Y_CODETYPE_HEIGHT_HUMAN_ROTATION_NARROW_WIDE_CONTENT = 'BARCODE {0},{1},"{2}",{3},{4},{5},{6},{7},"{8}"\n'

/**
 * 打印一维条码
 * X                 QR code的左上角 X 坐标
 * Y                 QR code的左上角 X 坐标
 * ECC level         纠错等级
 *                   L   : 7%
 *                   M   : 15%
 *                   H   : 30%
 * cell width        1~10
 * mode              自动 / 手动编码
 *                   A   : 自动
 *                   M   : 手动
 * rotation          0   : 不旋转
 *                   90  ：顺时针旋转 90 度
 *                   180 ：顺时针旋转 180 度
 *                   270 ：顺时针旋转 270 度
 * model             M1:(默认)，原始版本
 *                   M2: 扩大版本（大部分的智能手机支持此版本）
 * mask              S0~S8，默认为 S7
 * content           数据内容限制：
 *                   1）数字数据：（数字 0~9）
 *                   2）字母数据
 *                      数字 0-9
 *                      大写字母 A-Z
 *                      9种其他字符：空格 , $ % * + - . / : )
 *                   其他见TSPL指令集文档                   
 */
_.QRCODE_X_Y_ECCLEVEL_CELLWIDTH_MODE_ROTATION_MODEL_MASK_CONTENT = 'QRCODE {0},{1},{2},{3},{4},{5},{6},{7},"{8}"\n'

/**
 * [exports description]
 * @type {[type]}
 */
module.exports = _;